package assigncookies455

import "sort"

// 455. Assign Cookies
// https://leetcode.com/problems/assign-cookies/
// 思路：
// 1. 将饼干和孩子的胃口都进行排序
// 2. 使用双指针，分别指向饼干和孩子的胃口
// 3. 如果饼干的大小大于等于孩子的胃口，则将孩子的指针向后移动一位
// 4. 如果饼干的大小小于孩子的胃口，则将饼干的指针向后移动一位
// 5. 如果饼干的指针已经到达末尾，则返回孩子的指针
func FindContentChildren(g []int, s []int) int {
	var i, j int
	// 将饼干和孩子的胃口都进行排序
	sort.Ints(g)
	sort.Ints(s)
	// 使用双指针，分别指向饼干和孩子的胃口
	for i < len(g) && j < len(s) {
		// 如果饼干的大小大于等于孩子的胃口，则将孩子的指针向后移动一位
		if s[j] >= g[i] {
			i++
		}
		// 孩子的指针向后移动一位就意味着这个孩子的胃口被满足了，也意味着饼干已经被使用了，所以饼干的指针也要向后移动一位
		// 孩子的指针没有向后移动，说明这个孩子的胃口没有被满足，所以孩子不动，因为当前这个饼干肯定也满足不了后边的孩子，所以饼干的指针也要向后移动一位
		j++
	}
	// 返回孩子的指针
	return i
}
